Fix some issues with initial setup of GdkX11DisplayManager
authorMatthias Clasen <mclasen@redhat.com>
Mon, 27 Dec 2010 06:02:52 +0000 (01:02 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 27 Dec 2010 06:02:52 +0000 (01:02 -0500)
We need to defer setting the default display until the
GdkDisplay is fully initialized. Also, short-circuit some
encoding conversions when creating windows, to avoid an
implicit dependency on the display being in the list of
displays yet.

gdk/x11/gdkdisplaymanager-x11.c
gdk/x11/gdkwindow-x11.c

index 7d557fd1af2f721f21dc436bb06085c1abf13ba2..dd712d9296cf2f79b7f024277c15f2c9c6a53cc2 100644 (file)
@@ -49,7 +49,14 @@ static GdkDisplay *
 gdk_x11_display_manager_open_display (GdkDisplayManager *manager,
                                       const gchar       *name)
 {
-  return _gdk_x11_display_open (name);
+  GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager);
+  GdkDisplay *display;
+
+  display = _gdk_x11_display_open (name);
+  if (manager_x11->default_display == NULL)
+    gdk_display_manager_set_default_display (manager, display);
+
+  return display;
 }
 
 static GSList *
@@ -111,9 +118,6 @@ _gdk_x11_display_manager_add_display (GdkDisplayManager *manager,
 {
   GdkX11DisplayManager *manager_x11 = GDK_X11_DISPLAY_MANAGER (manager);
 
-  if (manager_x11->displays == NULL)
-    gdk_display_manager_set_default_display (manager, display);
-
   manager_x11->displays = g_slist_prepend (manager_x11->displays, display);
 }
 
index 5cc9fd20e4135588b23f0bab7770b380b43f9805..bd76a511a97a79da7081befcd79bbb43a1924176 100644 (file)
@@ -2244,7 +2244,7 @@ set_text_property (GdkDisplay  *display,
   if (utf8_is_latin1 (utf8_str))
     {
       prop_type = XA_STRING;
-      prop_text = gdk_utf8_to_string_target (utf8_str);
+      prop_text = _gdk_x11_display_utf8_to_string_target (display, utf8_str);
       prop_length = prop_text ? strlen (prop_text) : 0;
       prop_format = 8;
       is_compound_text = FALSE;